// app/api/projects/[projectId]/members/route.ts import { NextRequest, NextResponse } from 'next/server'; import { getServerSession } from 'next-auth/next'; import { authOptions } from '@/app/api/auth/[...nextauth]/route' import { ProjectService } from '@/lib/services/projectService'; // 프로젝트 멤버 추가 (Owner만 가능) export async function POST( request: NextRequest, { params }: { params: { projectId: string } } ) { try { const session = await getServerSession(authOptions); if (!session?.user) { return NextResponse.json({ error: '인증이 필요합니다' }, { status: 401 }); } const body = await request.json(); const projectService = new ProjectService(); await projectService.addProjectMember( params.projectId, body.userId, body.role, Number(session.user.id) ); return NextResponse.json({ success: true }); } catch (error: any) { if (error.message.includes('소유자')) { return NextResponse.json( { error: error.message }, { status: 403 } ); } console.error('멤버 추가 오류:', error); return NextResponse.json( { error: '멤버 추가에 실패했습니다' }, { status: 500 } ); } } export async function GET( request: NextRequest, { params }: { params: { projectId: string } } ) { try { const session = await getServerSession(authOptions); if (!session?.user) { return NextResponse.json({ error: '인증이 필요합니다' }, { status: 401 }); } const projectService = new ProjectService(); const member = await projectService.getProjectMembers( params.projectId, ); return NextResponse.json({member}); } catch (error: any) { if (error.message.includes('소유자')) { return NextResponse.json( { error: error.message }, { status: 403 } ); } console.error('멤버 조회 오류:', error); return NextResponse.json( { error: '멤버 조회에 실패했습니다' }, { status: 500 } ); } }